package com.ce.webframework.sec.dao;

import java.util.List;

import com.ce.webframework.sec.model.SecDragSourceDO;
import com.ce.webframework.sec.model.SecDragSourceTempDO;
import com.ce.webframework.sec.model.SecDragTargetDO;
import com.sitechasia.webx.core.dao.IDomainObjectDao;

/**
 * 拖动源dao
 *
 */
public interface ISecDragSourceDao extends IDomainObjectDao<SecDragSourceDO> {

	/**
	 * 功能描述:通过用户标识、企业标识查询能显示的拖拉源数据集
     * @param userId 用户标识
     * @param funcEntityIds 权限标识 集合
     * @param epId 企业标识
     * @return SecDragSourceDO集合
	 */
	public List<SecDragSourceDO> getDragSources(Long userId, List<String> funcEntityIds,  Long epId);


	/**
	 * 功能描述:增加拖动源
	 * @param userId 用户标识
	 * @param dragTargetDO 容器对象
	 * @param dragSourceTempDO 拖动源模板对象
	 * @param orderNum 顺序号
	 * @return 无
	 */
	public void addDragSource(Long userId, SecDragTargetDO dragTargetDO, SecDragSourceTempDO dragSourceTempDO, int orderNum);

	/**
	 * 功能描述:更新拖动源
	 * @param dragSourceId 拖动源标识
	 * @param dragTargetDO 容器对象
	 * @param dragSourceTempDO 拖动源模板对象
	 * @param orderNum 顺序号
	 * @param userId 用户标识
	 * @return 无
	 */
	public void updateDragSource(Long dragSourceId, SecDragTargetDO dragTargetDO
			, SecDragSourceTempDO dragSourceTempDO, int orderNum, Long userId);

	/**
	 * 功能描述:拖动源是否存在
	 * @param userId 用户标识
	 * @param dragSourceTempId 拖动源模板标识
	 * @param epId 企业标识
	 * @return boolean
	 */
	public boolean isExist(Long userId, String dragSourceTempId, Long epId);

	/**
	 * 功能描述:调整顺序号
	 * @param userId 用户标识
	 * @param epId 企业标识
	 * @param dragTargetId 容器标识
	 * @param orderNum 顺序号
	 * @return int
	 */
	public int adjustOrderNum(Long userId, Long epId, Long dragTargetId, int orderNum);

	/**
     * 功能描述:删除拖动源
     * @param userId 用户标识
     * @param dragSourceId 拖动源标识
     * @return 无
     */
    public void deleteDragSource(Long userId, Long dragSourceId);

    /**
     * 功能描述:通过拖动源模板和用户号查找拖动源
     * @param userId 用户标识
     * @param dragSourceTempId 拖动源模板标识
     * @param epId 企业标识
     * @return 无
     */
    public SecDragSourceDO searchDragSource(Long userId, String dragSourceTempId,Long epId);

}
